#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/async.h>
#include <iostream>


int main()
{
    //一 设置全局刷新策略
        // 1 每秒刷新
        spdlog::flush_every(std::chrono::seconds(1));
        // 2 遇到debug及以上等级日志立即刷新
        spdlog::flush_on(spdlog::level::level_enum::debug);

    // 二 设置全局日志输出等级 -- 每个日志器可以独立进行设置
        spdlog::set_level(spdlog::level::level_enum::debug);
    // 初始化异步日志输出线程配置
        spdlog::init_thread_pool(3072, 1);
    // 三 创建异步日志器(标准输出/文件)
        // 1 标准输出
       auto logger = spdlog::stdout_color_mt<spdlog::async_factory>("default-logger");
       // 2  输出到文件
       //auto logger =spdlog::basic_logger_mt("file-logger", "test.log");
    // 四 设置日志器的刷新策略,以及日志器的输出等级
        //设置过全局刷新策略不需要再次设置
        //logger->flush_on(spdlog::level::level_enum::debug);
        logger->set_pattern("[%n]%Y-%m-%d %H:%M:%S [%t] [%-7l] %v");
    // 五 进行简单的日志输出
        logger->trace("你好！ {}", "小明");
        logger->debug("你好！ {}", "小明");
        logger->info("你好！ {}", "小明");
        logger->warn("你好！ {}", "小明");
        logger->error("你好！ {}", "小明");
        logger->critical("你好！ {}", "小明");
        std::cout << "日志输出演示完毕" << std::endl;



    return 0;
}